package activity;

import java.util.ArrayList;

import model.Todo;
import model.TodoDate;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.example.apptodo.R;

public class TodoAdapter extends BaseAdapter {

	private Context context = null;
	private ArrayList<Todo> data = null;
	private int resource = 0;
	
	public TodoAdapter(
			Context context, 
			ArrayList<Todo> data, 			//	ListViewに表示する初期データ
			int resource) {					//	アイテムのリソースID
		Log.i("TodoAdapter", "TodoAdapter");
		
		this.context = context;
		this.resource = resource;
		this.data = data;

		//	初期データが指定されなかった場合は生成する
		if (data == null) {
			this.data = new ArrayList<Todo>();
		}
	}

	@Override
	public int getCount() {
		Log.i("TodoAdapter", "getCount");
		
		return data.size();
	}

	@Override
	public Object getItem(int position) {
		Log.i("TodoAdapter", "getItem");
		
		return data.get(position);
	}

	@Override
	public long getItemId(int position) {
		Log.i("TodoAdapter", "getItemId");
		
		long id = 0;
		
		Todo todo = (Todo)getItem(position);
		if (todo != null) {
			id = todo.getId();
		}
		return id;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		Log.i("TodoAdapter", "getView");
		
		//	表示するデータを取得する
		Todo todo = (Todo)getItem(position);
		//	再利用可能なビュー
		View view = convertView;
		//	再利用可能なビューが渡されていなければ生成する
		if (view == null) {
			LayoutInflater inflater = LayoutInflater.from(this.context);
            view = inflater.inflate(resource, parent, false);
		}
		//	ビューの表示項目を設定する
		TextView textView = (TextView)view.findViewById(R.id.textAction);
		textView.setText(todo.getAction());
		
		String str = String.format(
				"%s %s", 
				TodoDate.getDateString(
						todo.getYear(), 
						todo.getMonth(), 
						todo.getDay()), 
				TodoDate.getTimeString(
						todo.getHour(), 
						todo.getMinute()));
		TextView textDate = (TextView)view.findViewById(R.id.textDateTime);
		textDate.setText(str);
		
		view.setBackgroundColor(todo.getDone() ? Color.GRAY : Color.WHITE);
		//	完成したビューを返す
		return view;
	}

	public void add(Todo todo) {
		Log.i("TodoAdapter", "add");
		
		this.data.add(todo);
	}
	
	public void clear() {
		Log.i("TodoAdapter", "clear");
		
		data.clear();
	}
}
